package myconfig

import (
	"io/ioutil"
	"gopkg.in/yaml.v3"
)

// 根文件路径和指定结构体解析YAML
func ParseYml2Struct(filePath string, out *GoConfig) *GoConfig {
	ymlByte, err := ioutil.ReadFile(filePath)
	if err != nil {
		panic(err)
	}

	err = yaml.Unmarshal(ymlByte, out)
	if err != nil {
		panic(err)
	}

	return out
}
// MySQL和Redis跳板机的支持
// 注意 结构体是不支持 设置 默认值的
// MySQL配置 驱动使用默认驱动
// 连接池怎么管理
type MySQLConfig struct {
	UserName string      // 数据库登录用户名
	Password string      // 用户登录明码
	Host string          // 数据库所在的主机IP/域名
	Port int             // 端口
	DbName string        // 数据库名称
	OtherSetting string  // 连接数据库其他参数
}

// redis配置
type RedisConfig struct {
	Database int 
	Host string
	Password string
	Port int
	// 连接池的管理如何做
}

// 根配置
type GoConfig struct {
	MysqlConfig MySQLConfig `yaml:"datasource"`
	RedisConfig RedisConfig `yaml:"redis"`
}

func InitGoConfig() *GoConfig {
	var goconfig GoConfig
	ParseYml2Struct("config.yml", &goconfig)
	return &goconfig
}